接下來,我們將深入探索Spring Boot。
大部分的Spring Boot專案都和RESTful API相關,可以說學會完成一個RESTful API專案,那麽就學會完成許多的Spring Boot專案。
我們的RESTful API專案是做一個Todo List,中文是待辦事項清單,大家可以思考這個專案應該具備哪些功能,以下是我的設計思路,提供給大家參考。
這個專案的核心部分就是待辦事項(todo),我們要如何設計這個待辦事項呢?
Todo應該要包含
接下來開始規劃功能的部分
待辦事項清單一定會有這個功能,todo的內容透過JSON傳送,我們不選擇透過網址,因為URL的上限是1024字母,超過的部分會消失,當title很長時就會有一部分的內容消失,假設我的title是研究肌聯蛋白(全名由189819個字母組成),我們的內容就會被截斷。如果使用JSON傳送則是不會發生內容被切斷。
功能的路徑設定為/
我們新增todo後,就會想要看是否有儲存到資料庫中,所以有這個功能很重要。
功能的路徑設定為/all
有時候我們不需要全部的todo,只需要一個todo就好,透過URL傳送id,id不可能超過1024字母。
功能的路徑設定為/{id}
有新增的功能,那麽應該也會有刪除的功能,刪除時需要指定id,避免不小心把todo全刪了,透過URL傳送id。
功能的路徑設定為/{id}
新增時有時會打錯字,需要有修改的功能,todo的內容透過JSON傳送。
功能的路徑設定為/{id}
待辦事項完成了,需要有標記完成的功能,透過URL傳送id。
功能的路徑設定為/{id}/completed
有標記完成的功能,也需要標記未完成,透過URL傳送id。
功能的路徑設定為/{id}/uncompleted
好的開始是成功的一半,我們的專案已經完成50%了,只剩實作的部分。
有些人可能會懷疑,這些內容和專案有什麼關係,在下一段會將思路轉換成表格,幫助大家理解。
欄位名稱 | 資料型態 | 說明 |
---|---|---|
id | Long | 唯一的id,方便資料庫搜尋 |
title | String | 用來寫要做的事 |
completed | Boolean | 表示是否完成 |
路徑 | HTTP request method | 說明 | Request body |
---|---|---|---|
/ | POST | 新增todo | Todo |
/all | GET | 查看資料庫內的todo | 無 |
/{id} | GET | 查看指定id的todo | 無 |
/{id} | DELETE | 刪除指定id的todo | 無 |
/{id} | PUT | 修改指定id的todo | Todo |
/{id}/completed | PATCH | 將todo標記完成 | 無 |
/{id}/uncompleted | PATCH | 將todo標記未完成 | 無 |
Request body用來夾帶Todo,將Todo內容傳輸給專案。
有些人可能認為路徑重複了,但是它們的HTTP request method不同,因此導向不同的地方。
RESTful API的核心價值在於根據HTTP request method和URL區分目的地,導向不同的結果。
舉個例子,捷運的垃圾桶通常有兩個洞,資源回收和一般垃圾,它們是同一個大桶子(URL),但是入口(HTTP request method)不同,最終垃圾分類成資源回收或一般垃圾(查看指定id、刪除指定id、修改指定id)。